package QianFeng16.JSON.UseGsonTool;

import QianFeng16.JSON.Create.Name;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import org.junit.Test;

import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.List;

/**
 * Json数据与java对象之间的转换
 **/
public class GSON {

    /**
     * 把一个JSON对象转换成java对象，或把一个java对象转换成JSON对象
     **/
    @Test
    public void gson1() {
        //将JSON对象转换为类对象
        Gson gson = new Gson();
        InputStream is = Thread.currentThread().getContextClassLoader()
                .getResourceAsStream("src/QianFeng16/JSON/Simple/names.json");
        InputStreamReader in = new InputStreamReader(is);
        Name name = gson.fromJson(in, Name.class);
        System.out.println(name.toString());
        //将类对象转换为JSON对象
        String json = gson.toJson(name);
        System.out.println(json);
    }

    /**
     * 把一组JSON对象转换成一个java对象集合，或把java对象集合转换成一组JSON对象
     **/
    @Test
    public void gson2() {
        //把一组JSON对象转换成一个java对象集合
        Gson gson = new Gson();
        InputStream is = Thread.currentThread().getContextClassLoader()
                .getResourceAsStream("src/QianFeng16/JSON/Simple/names.json");
        InputStreamReader in = new InputStreamReader(is);
        TypeToken<List<Name>> typeToken = new TypeToken<List<Name>>(){};
        List<Name> list = gson.fromJson(in, typeToken.getType());
        System.out.println(list);
        //把java对象集合转换成一组JSON对象
        String json = gson.toJson(list, typeToken.getType());
        System.out.println(json);
    }
}
